当前位置: GO > golang 变量声明以及null

golang 变量声明以及null

2023-11-21 分类:GO 作者:admin 阅读(23)

golang null
结构体 转换成字符串时nil转为null

1,某结构体的普通字段,可以在json标签里面加omitempty,这样某个字段如果没有值,就不返回

2,某结构体数组中的的子结构体字段,var tags_list []*models.BugTags 改为 tags_list := make([]*models.BugTags, 0)

3,在Go中,如果你尝试访问一个map中不存在的key,它将会返回map类型的值对应的零值。对于大多数map的value类型,零值为nil。比如interface{}

初始化:
如果初始化结构体,默认所有字段取0值;初始化结构体指针,默认nil

这两个初始化的方式有一定的区别。

params := &models.Cve5CollectionLogParam{}:这种初始化方式使用了短变量声明,通过&符号创建了一个指向models.Cve5CollectionLogParam类型零值的指针。这样做后,params就是一个指针类型的变量,可以直接对其字段进行操作。

var params *models.Cve5CollectionLogParam:这种初始化方式声明了一个指针类型的变量params,但是没有对其进行初始化。此时,params的值为nil,即指针不指向任何有效的内存地址。

如果在第二种初始化方式之后直接对params的字段进行赋值操作,会导致空指针错误。因为params是一个空指针,没有指向任何实际的对象或数据。解决这个问题的方法是先为params分配一块内存,并将其指向该内存地址,然后再对其字段进行赋值,如下所示:

go
params := &models.Cve5CollectionLogParam{}
params.Limit = pageNum
params.Offset = (page - 1) * pageNum
或者使用new函数为params分配内存并返回一个指向该内存地址的指针,然后对其字段进行赋值:

go
params := new(models.Cve5CollectionLogParam)
params.Limit = pageNum
params.Offset = (page - 1) * pageNum
通过以上方式,可以避免空指针错误,并正常对params的字段进行赋值操作。

「三年博客,如果觉得我的文章对您有用,请帮助本站成长」

赞(0) 打赏

支付宝
微信
0

支付宝
微信
标签:

上一篇:

下一篇:

你可能感兴趣

共有 0 - golang 变量声明以及null

博客简介

精彩评论

  • admin(6年前 (2020-03-09))

    分别用不同厚度的筏板定义,画图后这设置筏板变截面处理。 http://f.fwxgx.co...

    评:新文章!
  • admin(6年前 (2020-03-09))

    分别用不同厚度的筏板定义,画图后这设置筏板变截面处理。 http://f.fwxgx.co...

    评:新文章!
  • admin(6年前 (2020-03-09))

    新增一个框架图! http://biji.jinli.vip/wp-content/upl...

    评:新文章!
  • 一位WordPress评论者(6年前 (2020-02-13))

    嗨,这是一条评论。 要开始审核、编辑及删除评论,请访问仪表盘的“评论”页面。 评论者头像来自...

    评:世界,您好!